Description
给出一个由小写字母组成的字符串($p$ 行,每行 $20$ 个字母),以及 $s$ 个单词。将此字母串分成 $k$ 份,使每份中包含的单词数之和最大(单词可以重叠,但其首字母不能重复使用)。
数据范围:$p<=10, 1<k<=40, 1<=s<=6$
Solution
设 $f[i][j]$ 为前 $i$ 个字符分成 $j$ 段的最大单词数;$cnt[i][j]$ 表示在 不考虑断开 的前提下 $[i,j]$ 区间的单词数。
首先预处理处 $cnt$ 数组。
转移方程:$f[i][j]=max(f[k][j-1]+cnt[k+1][i])$ ($k$ 为枚举上次断开的位置)
Code
1 |
|